Como fazer uma junção espacial
Usando a API para fazer a junção de dois arquivos de Lotes que não tem correspondência numérica
Inicialmente vamos ler os arquivos .SHP
[1]:
import os
import sys
#path para a biblioteca do apiModulo. Ajuste de acordo com a necessidade
sys.path.insert(0, os.path.abspath('../../..'))
from apiModulo.api import *
semfaz = lerArquivo('LOTES/LOTES_FINAIS_2.shp')
htl = lerArquivo('LOTES/SLM_LOTES_USO_DO_SOLO_2020_2021.shp')
print(f"Feições em SEMFAZ: {semfaz.shape[0]}")
print(f"Feições em HTL: {htl.shape[0]}")
Feições em SEMFAZ: 12871
Feições em HTL: 12290
Como não existe correspondência entre os dois arquivos, vamos calcular o centroide da geometria do arquivo HTL
Caso queira visualizar o resultado da conversão dos polígono em ponto, você pode usar: visMapaSemIndicador(dados=htl, coluna_geom=‘geometry’)
[2]:
htl['geometry'] = htl['geometry'].centroid
Com os centroides para uma coleção de geometria calculado, podemos obter a junção espacial entre eles
Para isso vamos usar o predicado = contains e a forma = inner
[4]:
novos_lotes = juncaoEspacial(semfaz, htl, tipo="inner", predicado='contains')
Para checar o resultado podemos:
imprimir as colunas e verificar que o resultado possui colunas dos dois arquivos originais
[5]:
novos_lotes.columns
[5]:
Index(['OBJECTID_1', 'SETOR', 'QUADRA', 'DISTRITO', 'SETOR_NOV', 'QDR_NPV',
'GEOCODE', 'INS_ANT', 'AREA', 'Shape_Leng', 'de_observa', 'de_geocodi',
'DE_USO', 'DE_TIPOLOG', 'GEOCODE_SE', 'Shape_STAr', 'Shape_STLe',
'PRIOR', 'NR', 'N_IMOVEL', 'FOTO', 'TIPO', 'TIPOLOGIA', 'INSCRICAO_',
'LOGRADOURO', 'NUMERO_left', 'BAIRRO', 'TOMBAMENTO', 'ZONA_DE_IN',
'NUMERO_CAR', 'DOMINIO', 'PROPRIEDAD', 'CONDENACAO', 'NUMERO_DO_',
'DIVIDA_DE_', 'NUMERO_DO1', 'SITUACAO', 'STATUS_OCU', 'STATUS_SIT',
'USO_left', 'ESTADO_DE_', 'OBSERVACAO', 'OBSERVAC_1', 'PROJETO',
'ETAPA', 'OBRA', 'USO1', 'ENTE', 'OBSERVAC_2', 'PRIORIDADE',
'GEOCODE_1', 'DIVIDA', 'NR_1', 'VIS_1', 'CONJ', 'CONJ_PREF',
'USO_POTENC', 'USO_PROPOS', 'OBSERV', 'geometry', 'index_right',
'ID_JOIN3', 'COD_LOT', 'GABARITO', 'USO_right', 'TIPOLOGIAS', 'CONSERV',
'OCIOSIDA', 'VOCACAO', 'NUMERO_right', 'TP_COLETA', 'ESTILO',
'GOOGLE_ANO', 'AREA_M2', 'ID_PA', 'PAISAGEM_C', 'UN_PAISAGE',
'check_in', 'HA_LOT'],
dtype='object')
Podemos ainda escolher uma dessas colunas para visualizar.
nesse exemplo, escolhemos CONSERV
[6]:
visMapaGJson(novos_lotes,
variavel='CONSERV',
descricao='Uso',
height='800',
width='90%')
[6]: